\documentclass[10pt,twocolumn,letterpaper]{article}

\usepackage{cvpr}
\usepackage{times}
\usepackage{epsfig}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{ctex}
% Include other packages here, before hyperref.

% If you comment hyperref and then uncomment it, you should delete
% egpaper.aux before re-running latex.  (Or just hit 'q' on the first latex
% run, let it finish, and you should be clear).
\usepackage[breaklinks=true,bookmarks=false]{hyperref}

\cvprfinalcopy % *** Uncomment this line for the final submission

\def\cvprPaperID{****} % *** Enter the CVPR Paper ID here
\def\httilde{\mbox{\tt\raisebox{-.5ex}{\symbol{126}}}}

% Pages are numbered in submission mode, and unnumbered in camera-ready
%\ifcvprfinal\pagestyle{empty}\fi
\setcounter{page}{1}
\begin{document}

%%%%%%%%% TITLE
\title{第1组\ 利用U-Net进行煤矸石占比检测实验报告}

\author{吕明哲 nice job}

\maketitle
%\thispagestyle{empty}

%%%%%%%%% ABSTRACT
\begin{abstract}
   煤矸石检测是煤炭生产过程中所要面对的 重要现实问题之一,传统的机械分选方式难以应对现代化生产需求，近年来随着深度学习方法的发展，利用机器视觉方法分选煤矸石成为了一种重要生产手段。本文采用基于UNet的神经网络模型迁移学习方法，将煤矸石样本图片划分为训练集和测试集，进行了分选实验。实验表明，该方法可以有效的识别煤矸石，具有较好的应用前景。
\end{abstract}

%%%%%%%%% BODY TEXT
\section{项目背景简介}

煤矸石是煤炭开采和洗选加工过程中产生的一种固体废弃物。我国煤矸石已累计堆存50亿吨以上，且仍在以每年3.0$\sim$3.5亿吨的速度增加，预计到2020年，全国煤矸石年排放量将增至7.29亿吨。煤矸石的大量存放不仅浪费土地资源，还会发生自燃、雨淋，泥化等情况，造成大气污染，重金属污染，对环境产生严重危害。然而从资源属性分析，煤矸石是一种宝贵的二次能源，对其进行资源化利用是防止环境灾害发生的必要措施，也是实现我国煤炭行业生态文明和循环经济发展的重要工作之一。

目前，煤矸石分拣工作主要依靠人工选矸和重介选煤两种方式，

矸存在劳动强度大、工作环境差、易发生事故等问题，难以保障工人健康，选矸效率低。因此实现煤矸石自动分选具有十分重要的现实意义。煤矸分选主要分为机械洗选、射线选矸和机器视觉分选。在实际生产过程中，机械洗选方法存在占地面积大、水量浪费多等问题。射线法主要依靠煤矸石对电磁波反射率不同进行分选，对环境和人的身体伤害大。传统的机器视觉方法主要是利用煤矸图像特征分析，利用其灰度、纹理特征进行图像识别和统计分析，随着深度学习在图像识别领域迅速发展，各种深度卷积神经网络模型不断涌现，越来越多的学者将这些模型用于煤矸石的分选当中，曹现刚使用了基于迁移学习的Inception V3模型用于煤矸石图像识别$^{\cite{cao2019}}$，蒲媛媛利用了基于迁移学习的VGG-16模型进行了分选实验$^{\cite{pu2019image}}$，洪辉超使用了改进版的AlaxNet进行了分选实验$^{\cite{hong2017automatic}}$，苏玲玲使用了改进的LeNet-5进行选矸识别$^{\cite{su2018research}}$，候伟设计了一套基于机器视觉的分选系统$^{\cite{hou2019identification}}$，如图\ref{硬件系统}所示，并利用前馈神经网络模型进行煤矸石分选。


深度学习方法在煤矸石检测分选中表现出了巨大的潜力，在下文中，我们详细描述我们所采取方法的细节。

\section{数据集及数据预处理}
数据集为煤矸石在固定背景拍摄的图片，每张图片中只含有一块煤矸石，其中煤矸石具有可区分的煤和矸石两部分。总共有236张原始图片和其对应的标注数据，原始图片为852*480像素的灰度图片。数据集采用了采用labelme软件来标记，其中黑色表示背景，红色表示煤，绿色表示矸石。

数据与处理方法首先采用
图像平滑滤波，该方法是在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制，是预处理中常见的操作，其处理效果直接影响后续分析的有效性和可靠性。
本实验中我们采用了高斯滤波，它是一种线性平滑滤波，适用于消除高斯噪声，广泛应用于图像去噪，它是一种低频增强的空间域滤波技术，可以简单地理解为对整幅图像像素值进行加权平均，针对每一个像素点的值，都是由其本身值和邻域内的其他像素值经过加权平均后得到，高斯滤波有模糊和消除噪音两类目的。邻域越大平滑的效果越好，但邻域过大时平滑操作会使边缘信息损失越大，从而使输出的图像变得模糊，因此需要选择合理的邻域大小。
二维高斯分布函数

\begin{equation}
G(x, y)=\frac{1}{\sqrt{2 \pi} \sigma^{2}} e^{-\frac{x^{2}+y^{2}}{2 \sigma^{2}}}
\end{equation}

高斯滤波的具体操作是用一个用户设定的高斯卷积核去扫描图像中的每一个像素，经过计算用邻域内像素的加权平均值代替目标中心点像素值。一般图像的旋转是以图像的中心为原点，旋转一定的角度，也就是将图像上的所有像素都旋转一个相同的角度。旋转后图像的的大小一般会改变，即可以把转出显示区域的图像截去，或者扩大图像范围来显示所有的图像。图像的旋转变换也可以用矩阵变换来表示。设点$P_{0}\left(x_{0}, y_{0}\right)$逆时针旋转$\theta$角后的对应点为$P(x, y)$。那么旋转前后点$P_{0}\left(x_{0}, y_{0}\right)$、$P(x, y)$的坐标分别是：

\begin{equation}
\left\{\begin{array}{l}{x_{0}=r \cos \alpha} \\ {y_{0}=r \cos \alpha}\end{array}\right.
\end{equation}

\begin{equation}
\left\{\begin{array}{l}{x=r \cos (\alpha+\theta)=x_{0} \cos \theta-y_{0} \sin \theta} \\ {y=r \sin (\alpha+\theta) = x_{0} \sin \theta+y_{0} \cos \theta}\end{array}\right.
\end{equation}

第三种数据预处理的方法是灰度值变换，它是根据某种目标条件按一定变换关系逐点改变源图像中每一个像素灰度值的方法。目的是为了改善画质，使图像的显示效果更加清晰。 图像的灰度变换处理是图像增强处理技术中的一种非常基础、直接的空间域图像处理方法，也是图像数字化软件和图像显示软件的一个重要组成部分。

本实验对图像进行了分段线性变换，增强图像对比度实际是增强图像中各部分之间的反差，往往通过增加图像中两个灰度值间的动态范围来实现，有时也称其为对比度拉伸。为了突出感兴趣的灰度区间，相对抑制那些不感兴趣的灰度区间，可采用分段线性变换。常用的三段线性变换如又图所示，L表示图像总的灰度级数，其数学表达式如下，

\begin{equation}
s=T(r)
\end{equation}

其中，T是灰度变换函数；r是变换前的灰度；s是变换后的像素。图像灰度变换具有改善图像质量，使图像能够显示更多的细节，提高图像的对比度的作用，可以有选择的突出图像感兴趣的特征或者抑制图像中不需要的特征，可以有效的改变图像的直方图分布，使像素的分布更为均匀。

\section{算法部分}
\subsection{模型介绍}
U-Net算法\cite{ronnebergerconvolutional}介绍
卷积网络的典型用途是分类任务，其中图像的输出是单个类别标签。然而在许多视觉任务中，期望的输出应该包括定位，即将类标签分配给每个像素。

U-Net充分利用数据增强技术来更高效的使用带有标签的数据。在U-Net结构中，包括一个捕获上下文信息的收缩路径和一个允许精确定位的对称拓展路径。这种方法可以使用非常少的数据完成端到端的训练，并获得最好的效果。


在图\ref{unet}中，每一个蓝色块表示一个多通道特征图，特征图的通道数标记在顶部，X-Y尺寸设置在块的左下边缘。不同颜色的箭头代表不同的操作。图的左半部分是收缩路径，右半部分是扩展路径。每经过一次上采样都会将通道数减半，再与收缩路径对应的特征图进行拼接。网络对于输入的大小也是有要求的，为了使得输出的分割图无缝拼接，选择输入块的大小非常重要，以便所有的2 *2的池化层都可以应用于偶数的 x 层和 y 层。

U-Net与FCN不同的是U-net的上采样依然有大量的通道，这使得网络将上下文信息向更高层分辨率传播。扩展路径与收缩路径对称，形成一个U型的形状，网络没有全连接层并且只是用每一个卷积层的有效部分。U-Net训练时采用带有动量的SGD方法，且使用了很高的动量值，为了更大限度的使用GPU显存，相较于输入较大的批量，倾向于更大的图块。

U-Net的数据增强技术的关键是随机弹性形变，其使用随机位移矢量在粗糙的3*3网格上产生平滑形变，位移从10像素的标准偏差的高斯分布中采样，然后采用双三次插值计算每个像素的位移。其在收缩路径的末尾加入drop-out层进一步增加数据。



\subsection{Adam算法}
Adam 是一种可以替代传统随机梯度下降（SGD）过程的一阶优化算法，它能基于训练数据迭代地更新神经网络权重。自适应动量估计（Adaptive Moment Estimation，Adam）算法[Kingma and Ba, 2015] 可以看作是动量法和RMSprop的结合，不但使用动量作为参数更新方向，而且可以自适应调整学习率$^{\cite{Barakat2018Convergence}}$。
Adam算法的优点：
（1）实现简单，计算高效，对内存需求少
（2）参数的更新不受梯度的伸缩变换影响
（3）超参数具有很好的解释性，且通常无需调整或仅需很少的微调
（4）更新的步长能够被限制在大致的范围内（初始学习率）
（5）能自然地实现步长退火过程（自动调整学习率）
（6）很适合应用于大规模的数据及参数的场景
（7）适用于不稳定目标函数
（8）适用于梯度稀疏或梯度存在很大噪声的问题

Adam 算法和传统的随机梯度下降不同。随机梯度下降保持单一的学习率（即 alpha）更新所有的权重，学习率在训练过程中并不会改变。而 Adam 通过计算梯度的一阶矩估计和二阶矩估计而为不同的参数设计独立的自适应性学习率。Adam 算法为两种随机梯度下降扩展式的优点集合，即：
（1）适应性梯度算法（AdaGrad）为每一个参数保留一个学习率以提升在稀疏梯度（即自然语言和计算机视觉问题）上的性能。
（2）均方根传播（RMSProp）基于权重梯度最近量级的均值为每一个参数适应性地保留学习率。这意味着算法在非稳态和在线问题上有很有优秀的性能。
如上算法所述,Adam算法一方面计算梯度平方$g_t^2$的指数加权平均（和RMSprop类似），另一方面计算梯度$g_t$的指数加权平均（和动量法类似）。

\begin{equation}
\mathrm{M}_{\mathrm{t}}=\beta_{1} \mathrm{M}_{\mathrm{t}-1}+\left(1-\beta_{1}\right) \mathrm{g}_{\mathrm{t}}
\end{equation}

\begin{equation}
\mathrm{G}_{\mathrm{t}}=\beta_{2} \mathrm{G}_{\mathrm{t}-1}+\left(1-\beta_{2}\right) \mathrm{g}_{\mathrm{t}} \odot \mathrm{g}_{\mathrm{t}}
\end{equation}

其中$β_1$和$β_2$分别为两个移动平均的衰减率，通常取值为$β_1=0.9$, $β_2= 0.99$。
$M_t$可以看作是梯度的均值（一阶矩），$G_t$可以看作是梯度的未减去均值的
方差（二阶矩）。
假设$M_0=0$, $G_0=0$，那么在迭代初期$M_t$和$G_t$的值会比真实的均值和方差要小。特别是当$β_1$和$z_2$都接近于1时，偏差会很大。因此，需要对偏差进行修正。

\begin{equation}
\widehat{\mathrm{M}}=\frac{\mathrm{M}_{\mathrm{t}}}{1-\beta_{1}^{\mathrm{t}}}
\end{equation}

\begin{equation}
\widehat{\mathrm{G}}=\frac{\mathrm{G}_{\mathrm{t}}}{1-\beta_{2}^{\mathrm{t}}}
\end{equation}

Adam算法的参数更新差值为

\begin{equation}
\Delta \theta_{\mathrm{t}}=\frac{\alpha}{\sqrt{\widehat{\mathrm{G}_{\mathrm{t}}}+\epsilon}} \widehat{\mathrm{M}}_{\mathrm{t}}
\end{equation}

其中学习率α通常设为0.001，并且也可以进行衰减，比如$\alpha_{t}=\frac{\alpha_{0}}{\sqrt{t}}$


\section{结果分析}



\subsection{评价指标}
这里首先介绍几个常见的模型评价术语，现在假设我们的分类目标只有两类，计为正例（positive）和负例（negtive）分别是：

1）True positives(TP):  被正确地划分为正例的个数，即实际为正例且被分类器划分为正例的实例数（样本数）；


2）False positives(FP): 被错误地划分为正例的个数，即实际为负例但被分类器划分为正例的实例数；

3）False negatives(FN):被错误地划分为负例的个数，即实际为正例但被分类器划分为负例的实例数；

4）True negatives(TN): 被正确地划分为负例的个数，即实际为负例且被分类器划分为负例的实例数。

首先我们可以计算准确率(accuracy),其定义是: 对于给定的测试数据集，分类器正确分类的样本数与总样本数之比。也就是损失函数是0-1损失时测试数据集上的准确率。

\begin{equation}
\text { Accuracy }=\frac{T P+T N}{T P+T N+F P+F N}
\end{equation}

精确率(precision)，它计算的是所有被检索到的item中,"应该被检索到"的item占的比例。



\section*{致谢}


\section*{附录}
本文对应代码已开源。


%------------------------------------------------------------------------

\bibliographystyle{ieee}
\bibliography{egbib}


\end{document}
